package com.foreknow.controller;

import com.foreknow.bean.Users;
import com.foreknow.service.impl.UserServiceImpl;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

/**
 * Servlet :服务器端的应用程序 主要用于处理客户端的请求
 * 1.继承HTTPServlet(在继承之前一定要将servlet-api.jar(在tomcat的lib中)包放到lib文件夹中)
 * 2.重写父类中的deget和dopost方法
 * 3.HttpServletRequest req   请求对象(接口):他可以封装一些请求的信息(请求的参数name="tom"&age=30&school="neu")
 * 4.HttpServletResponse resp 响应对象(接口):资源的跳转
 * 5.Servlet写完一定要去web.xml中配置
 * 6.在浏览器中输入url:http://localhost:8080/Lianxi_caozuo/
 *
 * 面试 Servlet生命周期
 * 1. Servlet 通过调用 init () 方法进行初始化（只调用一次）。
 * 2.Servlet 调用 service() 方法来处理客户端的请求（每一次请求都要调用一次）。
 *      service() 方法会自动调用doGet或doPost
 *3.Servlet 通过调用 destroy() 方法终止（只调用一次）。
 */
public class FirstServlet extends HttpServlet {
    @Override
    public void init(ServletConfig config) throws ServletException {
        //初始化的方法可以利用参数来获取配置文件web.xml当中的数据(局部)
//        int page = Integer.parseInt(config.getInitParameter("abc"));
//        全局的初始化参数
        int page = Integer.parseInt(config.getServletContext().getInitParameter("abc"));
        System.out.println(page);
    }

    //如果用户发送的请求是get请求,那么自动调用servlet中的doget()方法
    //例如超链接默认的请求就是get请求<a href="url">连接</a>
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //服务器端向客户端相应的内容的类型(MIME)
        resp.setContentType("text/html;charset=utf-8");
        //向网页响应内容  字符流
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<head><title>hehe</title>");
        out.println("</head>");
        out.println("<body>");
        out.println(new Date());
        out.println("</body>");
        out.println("</html>");
    }
    //如果用户发送的请求是get请求,那么自动调用servlet中的dopost()方法
    //例如表单可以通过method="get/post"来设置请求方式<form method="post"></form>
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        //向网页响应内容  字符流
        PrintWriter out = resp.getWriter();
        //request中的其他方法测试
//         out.println("获取请求方法的名称"+req.getMethod());
//         out.println("获取访问项目的地址名称"+req.getContextPath());
//         out.println("uri   "+req.getRequestURI());
//         out.println(" url  "+req.getRequestURL());
       //获取页面上用户输出入的数据  获取请求的参数name="tom"&password=30
        String username = req.getParameter("username");
        String password = req.getParameter("password");
//        out.println(username+"-------"+password);
        UserServiceImpl userService = new UserServiceImpl();
        Users users = userService.query(username,password);
        if (users!=null){
           out.println(users.getAdminname());
        }else {
            out.println("error.....");
        }

    }
}
